// 题目链接：https://www.luogu.com.cn/problem/P1025

#include <iostream>

using namespace std;

int n, k;
int res = 0;

// sum表示当前已经分的数的和
// start表示从start这个数开始选要分的数
// x表示已经分成了x个数
void DFS(int sum, int start, int x)
{
    // 剪枝，如果目前的分法剩下的没有分的数已经不够分了，直接返回
    if (n - sum < start * (k - x))
    {
        return;
    }

    if (x == k)
    {
        if (sum == n)
        {
            ++res;
        }
        return;
    }

    // 只需遍历到n - sum，降低复杂度
    for (int i = start; i <= n - sum; ++i)
    {
        DFS(sum + i, i, x + 1);
    }
}

int main()
{
    scanf("%d %d", &n, &k);
    DFS(0, 1, 0);

    printf("%d\n", res);

    return 0;
}